package com.beans;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;


/*
* 构造方法注入：通用性更好，它能确保在使用注入对象之前，此注入对象一定初始化过了。
*               当构造方法注入参数过多时，此时开发者就要检查自己所写的代码是否符合
*               单一设计原则的规范了，此注入方式也是 Spring 后期版本中推荐的注入方式
*
* */

@Controller
public class UserController3 {

    //2.通过构造方法注入
    private UserService userService;

    //构造方法写入（官方推荐写法）
    //如果当前类中只存在一个构造方法，那么 @Autowired 注解可以省略
//    @Resource 不支持构造方法注入
    @Autowired
    public UserController3(UserService userService){
//        userService = new UserService(); //传统的写法
        this.userService = userService;
    }

    public void sayHi(){
        userService.sayHi();
    }

}
